import subprocess

from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QGridLayout, QLabel, QComboBox, QMessageBox

from get_users import get_users, current_user


class RecreateUser(QWidget):

    def recreate_user(self):
        selected_user = self.users_combobox.currentData()
        dlg = QMessageBox()
        dlg.setWindowTitle('Внимание!')
        dlg.setText(f'Вы действительно хотите пересоздать учётную запись пользователя '
                    f'{selected_user}?')
        dlg.setStandardButtons(QMessageBox.Ok | QMessageBox.Cancel)
        if dlg.exec() == QMessageBox.Ok:
            if selected_user == current_user():
                dlg2 = QMessageBox()
                dlg2.setWindowTitle('Ошибка')
                dlg2.setText('Вы не можете пересоздать учётную запись с активным логином')
                dlg2.exec()
            else:
                subprocess.run(f'userdel -r {selected_user}', shell=True)
                subprocess.run(f'useradd {selected_user} && passwd -d {selected_user}', shell=True)
                dlg2 = QMessageBox()
                dlg2.setWindowTitle('Внимание')
                dlg2.setText(f'Учётная запись пользователя {selected_user} успешно пересоздана. '
                             f'Внимание: пароль для записи отсутствует, при необхходимости установите его вручную.')
                dlg2.exec()

    def __init__(self):
        super().__init__()

        layout = QGridLayout()
        self.setLayout(layout)

        recreate_user_label = QLabel('Пересоздание учётной записи')
        recreate_user_label.setAlignment(Qt.AlignCenter)
        layout.addWidget(recreate_user_label, 0, 0, 1, 2)
        choose_user_label = QLabel('Учётная запись: ')
        choose_user_label.setAlignment(Qt.AlignRight)
        layout.addWidget(choose_user_label, 1, 0)
        users = get_users()
        self.users_combobox = QComboBox()
        for user in users.keys():
            if users[user] not in (user, ''):
                self.users_combobox.addItem(f'{user} ({users[user]})', user)
            else:
                self.users_combobox.addItem(user, user)
        layout.addWidget(self.users_combobox, 1, 1)
        # recreate_button = QPushButton('Пересоздать')
        # recreate_button.clicked.connect(self.recreate_user)
        # layout.addWidget(recreate_button, 1, 0, 1, 2)
        layout.addWidget(QLabel(''), 2, 0)
        layout.setRowStretch(0, 0)
        layout.setRowStretch(1, 0)
        layout.setRowStretch(2, 1)
